干货丨常用模型的Mplus例句
萜妹之前遇见了一个神仙网站,觉得非常有用,所以就想推荐给小可爱们呀~
那我们开始吧。
网页介绍
这个网站是萜妹在看文章的时候在参考文献部分偶然发现的,说明网站还是很靠谱的,小可爱们如果需要在文章中引用可采用以下格式:
Stride C.B., Gardner S., Catley. N. & Thomas, F.(2015) 'Mplus code for mediation, moderation, and moderated mediation models', http://www.offbeat.group.shef.ac.uk/FIO/mplusmedmod.htm
这些语句主要是针对PROCESS中的模型,当然研究者做了一定的修改,使得语句更加完善。
由于是针对PROCESS模型,所以PROCESS不能处理多层数据,这里的语句也不可,想要处理多层的可以看Kris Preacher的网站。(原网站中有此链接)
最后,网站里的PROCESS各个模型的对应语句都有,萜妹这里就只对常用模型语句进行了搬运,如果没有小可爱们需要的,小可爱们可以去原网站查。(选择阅读原文可跳转至原网站)
模型与语句
下文语句中红字部分为可替换部分,另外数据文件来源及变量命名部分已省略。
Model 3:三阶调节
(向上滑动查看)
USEVARIABLES = X W Y XW XZ WZ XWZ;
DEFINE:
XW = X*W;
XZ = X*Z;
WZ = W*Z;
XWZ = X*W*Z;
ANALYSIS:
TYPE = GENERAL;
ESTIMATOR = ML;
BOOTSTRAP = 10000;
MODEL:
[Y] (b0);
Y ON X (b1);
Y ON W (b2);
Y ON Z (b3);
Y ON XW (b4);
Y ON XZ (b5);
Y ON WZ (b6);
Y ON XWZ (b7);
MODEL CONSTRAINT:
NEW(LOW_W MED_W HIGH_W LOW_Z MED_Z HIGH_Z LOW_LOZ MEW_LOZ HIW_LOZ LOW_MEZ MEW_MEZ HIW_MEZ LOW_HIZ MEW_HIZ HIW_HIZ);
LOW_W = #LOWW; ! 可将#LOWW替换为所选W的低值,下同
MED_W =#MEDW;
HIGH_W = #HIGHW;
LOW_Z =#LOWZ;
MED_Z = #MEDZ;
HIGH_Z = #HIGHZ;
LOW_LOZ = b1 + b4*LOW_W + b5*LOW_Z + b7*LOW_W*LOW_Z;
MEW_LOZ = b1 + b4*MED_W + b5*LOW_Z + b7*MED_W*LOW_Z;
HIW_LOZ = b1 + b4*HIGH_W + b5*LOW_Z + b7*HIGH_W*LOW_Z;
LOW_MEZ = b1 + b4*LOW_W + b5*MED_Z + b7*LOW_W*MED_Z;
MEW_MEZ = b1 + b4*MED_W + b5*MED_Z + b7*MED_W*MED_Z;
HIW_MEZ = b1 + b4*HIGH_W + b5*MED_Z + b7*HIGH_W*MED_Z;
LOW_HIZ = b1 + b4*LOW_W + b5*HIGH_Z + b7*LOW_W*HIGH_Z;
MEW_HIZ = b1 + b4*MED_W + b5*HIGH_Z + b7*MED_W*HIGH_Z;
HIW_HIZ = b1 + b4*HIGH_W + b5*HIGH_Z + b7*HIGH_W*HIGH_Z;
PLOT(PLOW_LOZ PMEW_LOZ PHIW_LOZ PLOW_MEZ PMEW_MEZ PHIW_MEZ PLOW_HIZ PMEW_HIZ PHIW_HIZ);
LOOP(XVAL,1,5,0.1);
PLOW_LOZ = (b0 + b2*LOW_W + b3*LOW_Z + b6*LOW_W*LOW_Z) + LOW_LOZ*XVAL;
PMEW_LOZ = (b0 + b2*MED_W + b3*LOW_Z + b6*MED_W*LOW_Z) + MEW_LOZ*XVAL;
PHIW_LOZ = (b0 + b2*HIGH_W + b3*LOW_Z + b6*HIGH_W*LOW_Z) + HIW_LOZ*XVAL;
PLOW_MEZ = (b0 + b2*LOW_W + b3*MED_Z + b6*LOW_W*MED_Z) + LOW_MEZ*XVAL;
PMEW_MEZ = (b0 + b2*MED_W + b3*MED_Z + b6*MED_W*MED_Z) + MEW_MEZ*XVAL;
PHIW_MEZ = (b0 + b2*HIGH_W + b3*MED_Z + b6*HIGH_W*MED_Z) + HIW_MEZ*XVAL;
PLOW_HIZ = (b0 + b2*LOW_W + b3*HIGH_Z + b6*LOW_W*HIGH_Z) + LOW_HIZ*XVAL;
PMEW_HIZ = (b0 + b2*MED_W + b3*HIGH_Z + b6*MED_W*HIGH_Z) + MEW_HIZ*XVAL;
PHIW_HIZ = (b0 + b2*HIGH_W + b3*HIGH_Z + b6*HIGH_W*HIGH_Z) + HIW_HIZ*XVAL;
PLOT:
TYPE = plot2;
OUTPUT:
STAND CINT(bcbootstrap);
Model 6:链式中介
USEVARIABLES = X M1 M2 Y;
ANALYSIS:
TYPE = GENERAL;
ESTIMATOR = ML;
BOOTSTRAP = 10000;
MODEL:
Y ON M1 (b1);
Y ON M2 (b2);
Y ON X (cdash);
M1 ON X (a1);
M2 ON X (a2);
M2 ON M1 (d1);
MODEL CONSTRAINT:
NEW(a1b1 a2b2 a1d1b2 TOTALIND TOTAL);
a1b1 = a1*b1;
a2b2 = a2*b2;
a1d1b2 = a1*d1*b2;
TOTALIND = a1*b1 + a2*b2 + a1*d1*b2;
TOTAL = a1*b1 + a2*b2 + a1*d1*b2 + cdash;
OUTPUT:
STAND CINT(bcbootstrap);
Model 7:有调节的中介(第一阶段)
USEVARIABLES = X M W Y XW;
DEFINE:
XW = X*W;
ANALYSIS:
TYPE = GENERAL;
ESTIMATOR = ML;
BOOTSTRAP = 10000;
MODEL:
[Y] (b0);
Y ON M (b1);
Y ON X (cdash);
[M] (a0);
M ON X (a1);
M ON W (a2);
M ON XW (a3);
MODEL CONSTRAINT:
NEW(LOW_W MED_W HIGH_W IND_LOWW IND_MEDW IND_HIW IMM TOT_LOWW TOT_MEDW TOT_HIW);
LOW_W = #LOWW; ! 可将#LOWW替换为所选W的低值,下同
MED_W =#MEDW;
HIGH_W = #HIGHW;
IND_LOWW = a1*b1 + a3*b1*LOW_W;
IND_MEDW = a1*b1 + a3*b1*MED_W;
IND_HIW = a1*b1 + a3*b1*HIGH_W;
IMM = a3*b1;
TOT_LOWW = IND_LOWW + cdash;
TOT_MEDW = IND_MEDW + cdash;
TOT_HIW = IND_HIW + cdash;
PLOT(LOMOD MEDMOD HIMOD);
LOOP(XVAL,1,5,0.1);
LOMOD = IND_LOWW*XVAL;
MEDMOD = IND_MEDW*XVAL;
HIMOD = IND_HIW*XVAL;
PLOT:
TYPE = plot2;
OUTPUT:
STAND CINT(bcbootstrap);
Model 14:有调节的中介(第二阶段)
USEVARIABLES = X M V Y MV;
DEFINE:
MV = M*V;
ANALYSIS:
TYPE = GENERAL;
ESTIMATOR = ML;
BOOTSTRAP = 10000;
MODEL:
[Y] (b0);
Y ON M (b1);
Y ON V (b2);
Y ON MV (b3);
Y ON X (cdash);
[M] (a0);
M ON X (a1);
MODEL CONSTRAINT:
NEW(LOW_V MED_V HIGH_V IND_LOWV IND_MEDV IND_HIV IMM TOT_LOWV TOT_MEDV TOT_HIV);
LOW_ V = #LOWV; ! 可将#LOWW替换为所选V的低值,下同
MED_V =#MEDV;
HIGH_V = #HIGHV;
IND_LOWV = a1*b1 + a1*b3*LOW_V;
IND_MEDV = a1*b1 + a1*b3*MED_V;
IND_HIV = a1*b1 + a1*b3*HIGH_V
IMM = a1*b3;
TOT_LOWV = IND_LOWV + cdash;
TOT_MEDV = IND_MEDV + cdash;
TOT_HIV = IND_HIV + cdash;
PLOT(LOMOD MEDMOD HIMOD);
LOOP(XVAL,1,5,0.1);
LOMOD = IND_LOWV*XVAL;
MEDMOD = IND_MEDV*XVAL;
HIMOD = IND_HIV*XVAL;
PLOT:
TYPE = plot2;
OUTPUT:
STAND CINT(bcbootstrap);
Model 11:有三阶调节的中介(第一阶段)
USEVARIABLES = X M W Z Y XW XZ WZ XWZ;
DEFINE:
XW = X*W;
XZ = X*Z;
WZ = W*Z;
XWZ = X*W*Z;
ANALYSIS:
TYPE = GENERAL;
ESTIMATOR = ML;
BOOTSTRAP = 10000;
MODEL:
[Y] (b0);
Y ON M (b1);
Y ON X (cdash);
[M] (a0);
M ON X (a1);
M ON W (a2);
M ON Z (a3);
M ON XW (a4);
M ON XZ (a5);
M ON WZ (a6);
M ON XWZ (a7);
MODEL CONSTRAINT:
NEW(LOW_W MED_W HIGH_W LOW_Z MED_Z HIGH_Z ILOW_LOZ IMEW_LOZ IHIW_LOZ ILOW_MEZ IMEW_MEZ IHIW_MEZ ILOW_HIZ IMEW_HIZ IHIW_HIZ TLOW_LOZ TMEW_LOZ THIW_LOZ TLOW_MEZ TMEW_MEZ THIW_MEZ TLOW_HIZ TMEW_HIZ THIW_HIZ);
LOW_W = #LOWW;
MED_W =#MEDW;
HIGH_W = #HIGHW;
LOW_Z = #LOWZ;
MED_Z = #MEDZ;
HIGH_Z = #HIGHZ;
ILOW_LOZ = a1*b1 + a4*b1*LOW_W + a5*b1*LOW_Z + a7*b1*LOW_W*LOW_Z;
IMEW_LOZ = a1*b1 + a4*b1*MED_W + a5*b1*LOW_Z + a7*b1*MED_W*LOW_Z;
IHIW_LOZ = a1*b1 + a4*b1*HIGH_W + a5*b1*LOW_Z + a7*b1*HIGH_W*LOW_Z;
ILOW_MEZ = a1*b1 + a4*b1*LOW_W + a5*b1*MED_Z + a7*b1*LOW_W*MED_Z;
IMEW_MEZ = a1*b1 + a4*b1*MED_W + a5*b1*MED_Z + a7*b1*MED_W*MED_Z;
IHIW_MEZ = a1*b1 + a4*b1*HIGH_W + a5*b1*MED_Z + a7*b1*HIGH_W*MED_Z;
ILOW_HIZ = a1*b1 + a4*b1*LOW_W + a5*b1*HIGH_Z + a7*b1*LOW_W*HIGH_Z;
IMEW_HIZ = a1*b1 + a4*b1*MED_W + a5*b1*HIGH_Z + a7*b1*MED_W*HIGH_Z;
IHIW_HIZ = a1*b1 + a4*b1*HIGH_W + a5*b1*HIGH_Z + a7*b1*HIGH_W*HIGH_Z;
TLOW_LOZ = ILOW_LOZ + cdash;
TMEW_LOZ = IMEW_LOZ + cdash;
THIW_LOZ = IHIW_LOZ + cdash;
TLOW_MEZ = ILOW_MEZ + cdash;
TMEW_MEZ = IMEW_MEZ + cdash;
THIW_MEZ = IHIW_MEZ + cdash;
TLOW_HIZ = ILOW_HIZ + cdash;
TMEW_HIZ = IMEW_HIZ + cdash;
THIW_HIZ = IHIW_HIZ + cdash;
PLOT(PLOW_LOZ PMEW_LOZ PHIW_LOZ PLOW_MEZ PMEW_MEZ PHIW_MEZ PLOW_HIZ PMEW_HIZ PHIW_HIZ);
LOOP(XVAL,1,5,0.1);
PLOW_LOZ = ILOW_LOZ*XVAL;
PMEW_LOZ = IMEW_LOZ*XVAL;
PHIW_LOZ = IHIW_LOZ*XVAL;
PLOW_MEZ = ILOW_MEZ*XVAL;
PMEW_MEZ = IMEW_MEZ*XVAL;
PHIW_MEZ = IHIW_MEZ*XVAL;
PLOW_HIZ = ILOW_HIZ*XVAL;
PMEW_HIZ = IMEW_HIZ*XVAL;
PHIW_HIZ = IHIW_HIZ*XVAL;
PLOT:
TYPE = plot2;
OUTPUT:
STAND CINT(bcbootstrap);
Model 18:有三阶调节的中介(第二阶段)
USEVARIABLES = X M V Q Y MV MQ VQ MVQ;
DEFINE:
MQ = M*Q;
MV = M*V;
VQ = V*Q;
MVQ = M*V*Q;
ANALYSIS:
TYPE = GENERAL;
ESTIMATOR = ML;
BOOTSTRAP = 10000;
MODEL:
[Y] (b0);
Y ON M (b1);
Y ON V (b2);
Y ON Q (b3);
Y ON MV (b4);
Y ON MQ (b5);
Y ON VQ (b6);
Y ON MVQ (b7);
Y ON X (cdash);
[M] (a0);
M ON X (a1);
MODEL CONSTRAINT:
NEW(LOW_V MED_V HIGH_V LOW_Q MED_Q HIGH_Q ILOV_LOQ IMEV_LOQ IHIV_LOQ ILOV_MEQ IMEV_MEQ IHIV_MEQ ILOV_HIQ IMEV_HIQ IHIV_HIQ TLOV_LOQ TMEV_LOQ THIV_LOQ TLOV_MEQ TMEV_MEQ THIV_MEQ TLOV_HIQ TMEV_HIQ THIV_HIQ)
LOW_V = #LOWV;
MED_V =#MEDV;
HIGH_V = #HIGHV;
LOW_Q = #LOWQ;
MED_Q = #MEDQ;
HIGH_Q = #HIGHQ;
ILOV_LOQ = a1*b1 + a1*b4*LOW_V + a1*b5*LOW_Q + a1*b7*LOW_V*LOW_Q;
IMEV_LOQ = a1*b1 + a1*b4*MED_V + a1*b5*LOW_Q + a1*b7*MED_V*LOW_Q;
IHIV_LOQ = a1*b1 + a1*b4*HIGH_V + a1*b5*LOW_Q + a1*b7*HIGH_V*LOW_Q;
ILOV_MEQ = a1*b1 + a1*b4*LOW_V + a1*b5*MED_Q + a1*b7*LOW_V*MED_Q;
IMEV_MEQ = a1*b1 + a1*b4*MED_V + a1*b5*MED_Q + a1*b7*MED_V*MED_Q;
IHIV_MEQ = a1*b1 + a1*b4*HIGH_V + a1*b5*MED_Q + a1*b7*HIGH_V*MED_Q;
ILOV_HIQ = a1*b1 + a1*b4*LOW_V + a1*b5*HIGH_Q + a1*b7*LOW_V*HIGH_Q;
IMEV_HIQ = a1*b1 + a1*b4*MED_V + a1*b5*HIGH_Q + a1*b7*MED_V*HIGH_Q;
IHIV_HIQ = a1*b1 + a1*b4*HIGH_V + a1*b5*HIGH_Q + a1*b7*HIGH_V*HIGH_Q;
TLOV_LOQ = ILOV_LOQ + cdash;
TMEV_LOQ = IMEV_LOQ + cdash;
THIV_LOQ = IHIV_LOQ + cdash;
TLOV_MEQ = ILOV_MEQ + cdash;
TMEV_MEQ = IMEV_MEQ + cdash;
THIV_MEQ = IHIV_MEQ + cdash;
TLOV_HIQ = ILOV_HIQ + cdash;
TMEV_HIQ = IMEV_HIQ + cdash;
THIV_HIQ = IHIV_HIQ + cdash;
PLOT(PLOV_LOQ PMEV_LOQ PHIV_LOQ PLOV_MEQ PMEV_MEQ PHIV_MEQ PLOV_HIQ PMEV_HIQ PHIV_HIQ);
LOOP(XVAL,1,5,0.1);
PLOV_LOQ = ILOV_LOQ*XVAL;
PMEV_LOQ = IMEV_LOQ*XVAL;
PHIV_LOQ = IHIV_LOQ*XVAL;
PLOV_MEQ = ILOV_MEQ*XVAL;
PMEV_MEQ = IMEV_MEQ*XVAL;
PHIV_MEQ = IHIV_MEQ*XVAL;
PLOV_HIQ = ILOV_HIQ*XVAL;
PMEV_HIQ = IMEV_HIQ*XVAL;
PHIV_HIQ = IHIV_HIQ*XVAL;
PLOT:
TYPE = plot2;
OUTPUT:
STAND CINT(bcbootstrap);
Model 58:同时调节前后的中介
USEVARIABLES = X M W Y XW MW;
DEFINE:
MW = M*W;
XW = X*W;
ANALYSIS:
TYPE = GENERAL;
ESTIMATOR = ML;
BOOTSTRAP = 10000;
MODEL:
[Y] (b0);
Y ON M (b1);
Y ON W (b2);
Y ON MW (b3);
Y ON X (cdash);
[M] (a0);
M ON X (a1);
M ON W (a2);
M ON XW (a3);
MODEL CONSTRAINT:
NEW(LOW_W MED_W HIGH_W IND_LOWW IND_MEDW IND_HIW IMM_LOW IMM_MEDW IMM_HIW TOT_LOWW TOT_MEDW TOT_HIW);
LOW_W = #LOWW;
MED_W =#MEDW;
HIGH_W = #HIGHW;
IND_LOWW = a1*b1 + a3*b1*LOW_W + a1*b3*LOW_W + a3*b3*LOW_W*LOW_W;
IND_MEDW = a1*b1 + a3*b1*MED_W + a1*b3*MED_W + a3*b3*MED_W*MED_W;
IND_HIW = a1*b1 + a3*b1*HIGH_W + a1*b3*HIGH_W + a3*b3*HIGH_W*HIGH_W;
IMM_LOW = a3*b1 + a1*b3 + a3*b3*LOW_W;
IMM_MEDW = a3*b1 + a1*b3 + a3*b3*MED_W;
IMM_HIW = a3*b1 + a1*b3 + a3*b3*HIGH_W;
TOT_LOWW = IND_LOWW + cdash;
TOT_MEDW = IND_MEDW + cdash;
TOT_HIW = IND_HIW + cdash;
PLOT(LOMOD MEDMOD HIMOD);
LOOP(XVAL,1,5,0.1);
LOMOD = IND_LOWW*XVAL;
MEDMOD = IND_MEDW*XVAL;
HIMOD = IND_HIW*XVAL;
PLOT:
TYPE = plot2;
OUTPUT:
STAND CINT(bcbootstrap);
啦啦啦,语句就搬运到这里啦。之前有小可爱问萜妹模型的语句如何写,所以萜妹想着有了这么期推送。
不过这期现在最大的bug是,如果小可爱们本身没有mplus的语句基础,可能看着会觉得上述有些语句比较复杂,所以萜妹把需要替换的部分都标明出来啦。如果小可爱们想弄清楚这些原理的话,可以回顾萜妹之前关于mplus的语句说明,以及笔记系列关于中介、调节的原理介绍。
最后就是,其实现在我们研究经常使用跨层数据,这篇里也提到了跨层数据需要去另外的网站。所以萜妹如果顺利的话,下周就介绍跨层的语句说明啦。如果搞不定,那下周写什么再看,毕竟最近承受开题压力,萜妹也没什么灵感啦。
那小可爱们,我们下周见啦~